package com.roadmap.client.module.statistic;

import java.util.Date;
import java.util.HashMap;
import java.util.List;

import com.roadmap.entities.LifePlan;
import com.roadmap.exception.InvalidQueryException;
import com.roadmap.exception.InvalidValueException;
import com.roadmap.exception.NullObjectException;
import com.roadmap.exception.ServerException;

public interface IStatisticUtil {
	/**
	 * get the amount of goals by status. The array consists of five elements.
	 * Get the value in this way: int[] counts = getGoalCounts(); int all =
	 * counts[BaseConst.LIFEGOAL_STATUS_ALL];
	 * 
	 * @return: a set of counts of goals classified by status.
	 * @throws ServerException
	 * @throws InvalidQueryException
	 * @throws NullObjectException
	 * @throws InvalidValueException:
	 *             if the aspirant id is NULLF
	 */
	public int[] getGoalCounts(String aspirantId) throws NullObjectException,
			InvalidQueryException, ServerException, InvalidValueException;

	/**
	 * get the amount of tasks by status. The array consists of four elements.
	 * Get the value in this way: int[] counts = getTaskCounts(); int all =
	 * counts[BaseConst.LIFETASK_STATUS_ALL];
	 * 
	 * @throws InvalidValueException
	 * @throws ServerException
	 * @throws InvalidQueryException
	 */
	public int[] getTaskCounts(String aspirantId) throws InvalidValueException,
			InvalidQueryException, ServerException;

	/**
	 * get the amount of a plan's tasks by status. If status = -1, get the
	 * number of plan's all tasks
	 */
	public int[] getTaskCountsOfPlan(String planId)
			throws InvalidValueException, InvalidQueryException,
			ServerException;

	/**
	 * 
	 */
	public List<ProgressPoint> getIdealExecutingTrend(LifePlan plan)
			throws NullObjectException, InvalidQueryException,
			InvalidValueException, ServerException;

	public List<ProgressPoint> getAcutalExecutingTrend(LifePlan plan)
			throws NullObjectException, InvalidQueryException,
			InvalidValueException, ServerException;
}
